#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
 int count = 0;
int bx, by, mx, my;
//int arr[8][2];
struct flag
{
	int x, y;
};
flag arr[8];
bool waring(int x, int y)
{
	for (int i = 0; i < 8; i++)
	{
		if (arr[i].x== x && arr[i].y == y)
		{
			return true;
		}
	}
	return false;
}

int fac(int x, int y)
{
	if (waring(x, y))
	{
		return 0;
	}
	if (x > bx || y > by)
	{
		return 0;
	}
	else if (x == bx && y == by)
	{
		return 1;
	}
	else
	{
		int n=(fac(x + 1, y) + fac(x, y + 1));
		return n;
	}
}
int main()
{
	
	cin >> bx >> by >> mx >> my;
	
	arr[0].x = mx + 1;
	arr[0].y = my + 2;

	arr[1].x = mx - 1;
	arr[1].y = my + 2;

	arr[2].x = mx + 1;
	arr[2].y = my - 2;

	arr[3].x = mx - 1;
	arr[3].y = my - 2;

	arr[4].x = mx + 2;
	arr[4].y = my + 1;

	arr[5].x = mx - 2;
	arr[5].y = my + 1;

	arr[6].x = mx + 2;
	arr[6].y = my - 1;

	arr[7].x = mx - 2;
	arr[7].y = my - 1;

	cout << fac(0, 0);
	//arr[0][0] = mx + 1;
	//arr[0][1] = my + 2;
	//arr[1][0] = mx + 2;
	//arr[1][1] = my + 1;
	//arr[2][0] = mx + 2;
	//arr[2][1]=mx

	return 0;
}